// pages/cart/cart.js
//引入模块：该模块负责数据本地缓存的相关操作
let shopcartCtrl = require('./shopcartCtrl');
//引入弹窗插件
import Dialog from '../../miniprogram_npm/@vant/weapp/dialog/dialog';
Page({
  /**
    购物车功能：
      * 做法
        * 本次做法：不登录也可以加入购物车：数据存在本地存储，下订单的时候要求你登陆。登陆，把本地的数据存到数据库
        * 登陆才能加入购物车：存在数据库
        
      * 功能分析：
        * 加入购物车：详情页：存储数据到本地 ->改成：详情页点击加入购物车就跳转到购物车页-传数据过来-购物车页进行数据存储
        * 显示购物车数据：购物车页，获取本地存储数据渲染
        * 全选，全不选，单选：购物车页
        * 小计功能：购物车页
        * 数量加减：购物车页
        * 删除某个商品：：购物车页，删除前要弹窗再次确认
        * 下单：登陆
   */
  data: {
    goodsList : [],
    allCheck : true,
    price : 0, //存放总价
  },
  //点击删除按钮-删除某个商品
  onClose(event) {
    const { instance } = event.detail;
    let {gid} = event.target.dataset;
    // console.log(position, instance);
    // instance.close();
    Dialog.confirm({
      title: '警告',
      message: '您确定要删除该商品吗?',
    })
      .then(() => {
        // on confirm
        console.log('确定');
        //删除该商品
        console.log('要删除的gid', gid);
        shopcartCtrl.delect(gid);
        //重新渲染页面
        this.getCartList();
        instance.close();//滑块收回去
      })
      .catch(() => {
        // on cancel
        console.log('取消');
        instance.close();//滑块收回去
      });
  },
  //页面加载完毕
  onLoad(options) {
    //接收详情页传过来的数据
    console.log('接收详情页传过来的数据',options);
    if(options.gid){
      //有数据才添加购物车
      shopcartCtrl.addCart(options);
    }
    this.getCartList();//渲染数据到页面
    
    
    //把数据存到本地(错误的逻辑)
    //1.取出本地数据
    // let arr = getCartData();
    //2.把新数据push到数组中
    // arr.push(options);
    //3.存数据到本地存储中
    // setCartData(arr);



    // let obj = options;
    // options.gChecked = true;
    // console.log('准备可以添加一条数据',obj);
    //存数据:详情页把数据传过来的时候，这边onload接收到options，就马上存到数据库
    // let arr = [{
    //   gid : '110',
    //   gname : '商品标题',
    //   gprice : 199,
    //   gnum : 89,
    //   gimgUrl : 'http://47.112.170.225:60009/img/db0082aec335e7e9c83822c322196caf.jpg',
    //   gChecked : true
    // }];
    // setCartData(arr);
    //取数据
    // let datas = getCartData();
    // console.log('取本地缓存的购物车数据', datas);
  },
  //渲染数据到页面
  getCartList() {
    //渲染数据到页面
    let list = shopcartCtrl.getCartData();
    this.setData({goodsList:list});
    //获取全选的状态
    let allCheck = shopcartCtrl.selCtrlAll();
    this.setData({allCheck});
    //显示总价
    let {price} = shopcartCtrl.getPriceCount();
    this.setData({price});
  },
  //单选功能
  selOne(ev) {
    let {gid} = ev.target.dataset;
    console.log('gid是', gid);
    //调用方法，改变单选的状态
    let allCheck = shopcartCtrl.selGoodOne(gid);
    this.getCartList();//渲染数据到页面
    this.setData({allCheck});
  },
  //全选、全不选
  selAll() {
    //1.获取我们想要的状态
    let status = !this.data.allCheck;
    //2.全选、全不选
    shopcartCtrl.goodAllCheck(status);
    //3.渲染数据到页面
    this.getCartList();
    //4.全选的状态要重新设置回data
    this.setData({allCheck : status});
  },
  //加数量
  addNum(ev) {
    //1.获取点击商品的gid
    let {gid} = ev.target.dataset;
    //2.加1
    shopcartCtrl.addGoodNum(gid);
    //3.渲染数据到页面
    this.getCartList();
  },
  //减数量
  cutNum(ev) {
    //1.获取点击商品的gid
    let {gid} = ev.target.dataset;
    //2.数量减1
    shopcartCtrl.cutGoodNum(gid);
    //3.渲染数据到页面
    this.getCartList();
  }
})